package com.star.star.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.star.star.dto.*;
import com.star.star.entity.StarChat;
import com.star.star.vo.StarChatPageVO;

/**
 * 粉丝留言艺人 服务类
 *
 * @author yangzj
 */
public interface StarChatService extends IService<StarChat> {

    //-------------------- 以下通用接口 --------------------

    /**
     * 粉丝留言-通用
     *
     * @param dto    入参
     * @param userId 用户ID
     */
    void initiate(StarChatInitiateSaveDTO dto, Long userId);

    /**
     * 艺人回复-通用
     *
     * @param dto    入参
     * @param userId 用户ID
     */
    void replay(StarChatReplaySaveDTO dto, Long userId);

    /**
     * 艺人回复时，粉丝名称列表分页-通用
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarChatPageVO}>
     */
    IPage<StarChatPageVO> pageFans(StarChatPageDTO dto);

    /**
     * 粉丝留言时，艺人名称列表分页-通用
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarChatPageVO}>
     */
    IPage<StarChatPageVO> pageStar(StarChatPageDTO dto);

    /**
     * 艺人回复分页-通用
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarChatPageVO}>
     */
    IPage<StarChatPageVO> pageReplay(StarChatReplayPageDTO dto);

    /**
     * 粉丝留言分页-通用
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarChatPageVO}>
     */
    IPage<StarChatPageVO> pageInitiate(StarChatInitiatePageDTO dto);

    /**
     * 获取粉丝未读艺人消息统计
     *
     * @param starId 艺人ID
     * @param userId 用户ID
     * @return {@link Integer}
     */
    Integer getFansUnread(Long starId, Long userId);

    /**
     * 获取艺人未读粉丝消息统计
     *
     * @param fansUserId 粉丝用户id
     * @param userId 用户ID
     * @return {@link Integer}
     */
    Integer getStarUnread(Long fansUserId, Long userId);
}
